package me.helllp.dake.core.bean;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.jetbrains.annotations.NotNull;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Map;
import java.util.Set;

/**
 * 用于认证的用户结构
 */
@Getter
@Setter
@ToString
public class DakeAuthAccount implements Serializable {
    /**
     * 用户ID，全局唯一
     */
    private Long userId;

    /**
     * 用户账号，租户内唯一
     */
    @NotBlank
    private String userAccount;

    /**
     * 用户名称
     */
    private String userName;

    /**
     * 租户ID，数据库中主键
     */
    private Long tenantId;

    /**
     * 租户编码，全局唯一，租户编码+用户账号 可以唯一标识一个人
     */
    @NotNull
    private String tenantCode;

    /**
     * 租户名称
     */
    private String tenantName;

    /**
     * 角色信息Map，key=应用编码，value=对应应用下的角色列表
     */
    private Map<String, Set<String>> roles;

    /**
     * 邮箱
     */
    private String userEmail;

    /**
     * 电话
     */
    private String userPhone;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 0:表示男；1:表示女
     */
    private Boolean sex;

    /**
     * 其他的用户扩展信息
     */
    private String otherUserInfo;

    /**
     * 其他租户信息
     */
    private String otherTenantInfo;

    /**
     * 操作者IP
     */
    private String userIp;
}
